﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BR_CruzDelSur;
using BR_CruzDelSur.Interfaces;
using System.Web.Services;
using BE_CruzDelSur;
using System.Web.UI.HtmlControls;

namespace WebCruzDelSur
{
    public partial class ActualizarCarga : System.Web.UI.Page
    {
        IBR_Carga carga = new BR_Carga();
        IBR_Cliente cliente = new BR_Cliente();
        IBR_Producto producto = new BR_Producto();
        IBR_Util util = new BR_Util();
        IBR_ProgramacionRuta programacionRuta = new BR_ProgramacionRuta();

        public static List<BE_Producto> lstProd = new List<BE_Producto>();

        [WebMethod]
        public static List<BE_Producto> ObtenerProductos()
        {
            return lstProd;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (HttpContext.Current.Session["Usuario"] == null)
            {
                String message = "Debe autenticarse en el sistema. ";
                String strJavascriptFunctions = "";
                strJavascriptFunctions = "ShowMessageError('" + message + "');";
                ClientScript.RegisterStartupScript(this.GetType(), "Alerta", strJavascriptFunctions, true);
                return;
            }

            if (!Page.IsPostBack)
            {
                string codigocarga = Request.QueryString["CodigoCarga"].ToString();
                BE_Carga entidad = carga.f_obtenerCarga(codigocarga);

                lstProd = new List<BE_Producto>();
                ddlEstado.DataSource = util.f_ListarUtil("C", "ES", false);
                ddlEstado.DataValueField = "Codigo";
                ddlEstado.DataTextField = "Nombre";
                ddlEstado.DataBind();
                ddlEstado.SelectedValue = "IN";

                ddlDepartamento.DataSource = util.f_ListarUtil("", "UD", true);
                ddlDepartamento.DataValueField = "Codigo";
                ddlDepartamento.DataTextField = "Nombre";
                ddlDepartamento.DataBind();

                ddlTipoCarga.DataSource = util.f_ListarUtil("", "TC", false);
                ddlTipoCarga.DataValueField = "Codigo";
                ddlTipoCarga.DataTextField = "Nombre";
                ddlTipoCarga.DataBind();

                ddlTipoPago.DataSource = util.f_ListarUtil("", "TP", false);
                ddlTipoPago.DataValueField = "Codigo";
                ddlTipoPago.DataTextField = "Nombre";
                ddlTipoPago.DataBind();

                txtDocIdeCli.Text = entidad.DNIClienteOrigen;
                txtDocIdeCliDes.Text = entidad.DNIClienteDestino;
                txtLargo.Text = entidad.Largo.ToString();
                txtAncho.Text = entidad.Ancho.ToString();
                txtPeso.Text = entidad.Peso.ToString();
                txtProfundidad.Text = entidad.Profundidad.ToString();
                ddlEstado.SelectedValue = entidad.EstadoCarga;
                ddlTipoCarga.SelectedValue = entidad.TipoCarga.ToString();
                ddlTipoPago.SelectedValue = entidad.TipoPago.ToString();
                txtObservaciones.Text = entidad.Observacion;
                txtCodigoProgramacionRuta.Value = entidad.CodigoProgramacionRuta.ToString();
                txtCodigoCarga.Value = entidad.CodigoCarga.ToString();

                BE_ProgramacionRuta pr = programacionRuta.f_BuscaProgramacionXCodigo(entidad.CodigoProgramacionRuta);

                lblAgencia.Text = pr.NombreAgencia;
                lblTransporte.Text = pr.TipoTransporte;
                lblTipoServicio.Text = pr.TipoServicio;
                lblDireccionAgencia.Text = pr.DireccionAgencia;
                lblFechaDestino.Text = pr.FechaDestino + " " + pr.HoraDestino;

                BE_Cliente co = cliente.f_BuscaClienteDNI(entidad.DNIClienteOrigen);
                lblApellidoCliente.Text = co.Apellidos;
                lblNombreCliente.Text = co.Nombres;
                lblDireccionCliente.Text = co.Direccion;
                lblTelefonoCliente.Text = co.Telefono;
                lblImageCliente.ImageUrl = "Images/Fotos/" + co.Foto;
                
                BE_Cliente cd = cliente.f_BuscaClienteDNI(entidad.DNIClienteDestino);
                lblApellidoCliDes.Text = cd.Apellidos;
                lblNombreCliDes.Text = cd.Nombres;
                lblDireccionCliDes.Text = cd.Direccion;
                lblTelefonoCliDes.Text = cd.Telefono;
                lblImageCliDes.ImageUrl = "Images/Fotos/" + cd.Foto;
                
                lstProd = producto.f_ListarProductos(entidad.CodigoCarga);
            }
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            int codigoCarga = util.f_intValor(txtCodigoCarga.Value);
            string dniDes = txtDocIdeCliDes.Text;
            string observacion = txtObservaciones.Text;
            int programacionRuta = util.f_intValor(txtCodigoProgramacionRuta.Value);
            
            //BE_Carga entidad = new BE_Carga() { Ancho = ancho, Largo = largo, Profundidad = profundidad, Peso = peso, DNIClienteOrigen = dniOri, DNIClienteDestino = dniDes, Observacion = observacion, TipoCarga = tipocarga, TipoPago = tipopago, CodigoProgramacionRuta = programacionRuta, EstadoCarga = "IN" };

            bool entidad = carga.f_ActualizarCarga(codigoCarga, observacion, programacionRuta, dniDes, ddlEstado.SelectedValue);
            
            lstProd = new List<BE_Producto>();

            String message = "Registro Actualizado Correctamente. ";
            String strJavascriptFunctions = "";

            strJavascriptFunctions = "ShowMessage('" + message + "');";

            ClientScript.RegisterStartupScript(this.GetType(), "Alerta", strJavascriptFunctions, true);

        }

        protected void btnRegresar_Click(object sender, EventArgs e)
        {
            Response.Redirect("BuscarCarga.aspx");
        }
    }
}